package com.coder.genreatetools.util;

import java.io.File;
import java.util.HashMap;
import java.util.Map;

/**
 */
public class Constants {
	/** 项目标题信息 **/
	public static String PROJECT_TITLE_INFO = "代码生成工具 v1.1";

	/** 根包路径 **/
	public static String BASE_PACKAGE_NAME = "com.tongjiuniversity.base.front";

	/**
	 * 数据名称
	 */
	public static String DB_NAME = "mysql";

	/**
	 * java类型
	 * @author chenshujie
	 */
	public static class JAVA_TYPE {
		/** 日期 **/
		public static String DATE = "Date";
		/** 双精度浮点型 **/
		public static String DOUBLE = "double";
		public static String DOUBLE_OBJ = "Double";
		/** 字符串型 **/
		public static String STRING = "String";
		/** Integer **/
		public static String INTEGER = "Integer";
		/** int **/
		public static String INT = "int";
		/** short **/
		public static String SHORT = "short";
		public static String SHORT_OBJ = "Short";
		/** Long **/
		public static String LONG = "long";
		/** long **/
		public static String LONG_OBJ = "Long";
		/** Float **/
		public static String FLOAT = "float";
		/** float **/
		public static String FLOAT_OBJ = "Float";
		/** Boolean **/
		public static String BOOLEAN = "boolean";
		/** boolean **/
		public static String BOOLEAN_OBJ = "Boolean";
	}

	/**
	 * mysql jdbc类型
	 * @author chenshujie
	 */
	public static class MYSQL_JDBC_TYPE {
		/** 时间 **/
		public static String TIME = "TIME";
		/** 日期 **/
		public static String DATE = "DATE";
		/** 日期时间 **/
		public static String TIMESTAMP = "TIMESTAMP";
		/** varchar **/
		public static String VARCHAR = "VARCHAR";
		/** decimal **/
		public static String DECIMAL = "DECIMAL";
		/** tinyint **/
		public static String TINYINT = "TINYINT";
		/** smallint **/
		public static String SMALLINT = "SMALLINT";
		/** mediumint **/
		public static String MEDIUMINT = "MEDIUMINT";
		/** int **/
		public static String INT = "INT";
		/** bigint **/
		public static String BIGINT = "BIGINT";
		/** double **/
		public static String DOUBLE = "DOUBLE";
		/** float **/
		public static String FLOAT = "FLOAT";
		/** datetime **/
		public static String DATETIME = "DATETIME";
		/** numeric **/
		public static String NUMERIC = "NUMERIC";
		/** integer **/
		public static String INTEGER = "INTEGER";
		/** bit **/
		public static String BIT = "BIT";
		/** char **/
		public static String CHAR = "CHAR";
		/** geometry **/
		public static String GEOMETRY = "GEOMETRY";
		/** varbinary **/
		public static String VARBINARY = "VARBINARY";
		/** binary **/
		public static String BINARY = "BINARY";
		/** blob **/
		public static String BLOB = "BLOB";
		/** tinyblob **/
		public static String TINYBLOB = "TINYBLOB";
		/** mediumblob **/
		public static String MEDIUMBLOB = "MEDIUMBLOB";
		/** longblob **/
		public static String LONGBLOB = "LONGBLOB";
	}

	/**
	 * mybatis jdbc类型
	 * @author hezhenhao
	 */
	public static class IBATIS_JDBC_TYPE {
		/** String **/
		public static String VARCHAR = "VARCHAR";
		/** int **/
		public static String INT = "INT";
		/** double **/
		public static String DOUBLE = "DOUBLE";
		/** date **/
		public static String DATE = "DATE";
		/** timestamp **/
		public static String TIMESTAMP = "TIMESTAMP";
		/** decimal **/
		public static String DECIMAL = "DECIMAL";
		/** char **/
		public static String CHAR = "CHAR";
		/** tinyint **/
		public static String TINYINT = "TINYINT";
		/** smallint **/
		public static String SMALLINT = "SMALLINT";
		/** bigint **/
		public static String BIGINT = "BIGINT";
		/** float **/
		public static String FLOAT = "FLOAT";
		/** numeric **/
		public static String NUMERIC = "NUMERIC";
		/** bit **/
		public static String BIT = "BIT";
	}

	/**
	 * java类型对应类
	 * @author chenshujie
	 */
	public static class JAVA_TYPE_CLASS {
		/** 日期类型 **/
		public static String DATE = "java.util.Date";
	}

	/**
	 * 路径 类
	 * @author zhongtu
	 *
	 */
	public static class GENERATE_PATH {
		/** JAVA 生成文件输出路径 **/
		public static String JAVA_GENERATE_PATH = BASE_PACKAGE_NAME.replace(".", File.separator);

		/** IBATIS 生成文件输出路径  **/
		public static String IBATIS_GENERATE_PATH = "config" + File.separator + "ibatis";

		/** SPRING 生成文件输出路径  **/
		public static String SPRING_GENERATE_PATH = "config" + File.separator + "spring";

		/** STRUTS 生成文件输出路径  **/
		public static String STRUTS_GENERATE_PATH = "config" + File.separator + "struts";
		
		/** JSP 生成文件输出路径  **/
		public static String JSP_GENERATE_PATH = "config" + File.separator + "jsp";
	}

	/**
	 * 数据库字段类型与ibatis类型关系
	 * @author chenshujie
	 */
	public static class DBJDBCTYPE_IBATISJDBCTYPE {
		public static Map<String, String> MYSQL_JDBC_TYPE_MAP = new HashMap<String, String>();
		static {
			MYSQL_JDBC_TYPE_MAP.put(MYSQL_JDBC_TYPE.VARCHAR, IBATIS_JDBC_TYPE.VARCHAR);
			MYSQL_JDBC_TYPE_MAP.put(MYSQL_JDBC_TYPE.DECIMAL, IBATIS_JDBC_TYPE.DECIMAL);
			MYSQL_JDBC_TYPE_MAP.put(MYSQL_JDBC_TYPE.CHAR, IBATIS_JDBC_TYPE.VARCHAR);
			MYSQL_JDBC_TYPE_MAP.put(MYSQL_JDBC_TYPE.DATE, IBATIS_JDBC_TYPE.TIMESTAMP);
			MYSQL_JDBC_TYPE_MAP.put(MYSQL_JDBC_TYPE.TINYINT, IBATIS_JDBC_TYPE.NUMERIC);
			MYSQL_JDBC_TYPE_MAP.put(MYSQL_JDBC_TYPE.SMALLINT, IBATIS_JDBC_TYPE.SMALLINT);
			MYSQL_JDBC_TYPE_MAP.put(MYSQL_JDBC_TYPE.MEDIUMINT, IBATIS_JDBC_TYPE.NUMERIC);
			MYSQL_JDBC_TYPE_MAP.put(MYSQL_JDBC_TYPE.INT, IBATIS_JDBC_TYPE.BIGINT);
			MYSQL_JDBC_TYPE_MAP.put(MYSQL_JDBC_TYPE.BIGINT, IBATIS_JDBC_TYPE.BIGINT);
			MYSQL_JDBC_TYPE_MAP.put(MYSQL_JDBC_TYPE.DOUBLE, IBATIS_JDBC_TYPE.DOUBLE);
			MYSQL_JDBC_TYPE_MAP.put(MYSQL_JDBC_TYPE.FLOAT, IBATIS_JDBC_TYPE.FLOAT);
			MYSQL_JDBC_TYPE_MAP.put(MYSQL_JDBC_TYPE.DATETIME, IBATIS_JDBC_TYPE.TIMESTAMP);
			MYSQL_JDBC_TYPE_MAP.put(MYSQL_JDBC_TYPE.NUMERIC, IBATIS_JDBC_TYPE.NUMERIC);
			MYSQL_JDBC_TYPE_MAP.put(MYSQL_JDBC_TYPE.INTEGER, IBATIS_JDBC_TYPE.NUMERIC);
			MYSQL_JDBC_TYPE_MAP.put(MYSQL_JDBC_TYPE.BIT, IBATIS_JDBC_TYPE.VARCHAR);
			MYSQL_JDBC_TYPE_MAP.put(MYSQL_JDBC_TYPE.CHAR, IBATIS_JDBC_TYPE.VARCHAR);
			MYSQL_JDBC_TYPE_MAP.put(MYSQL_JDBC_TYPE.TIMESTAMP, IBATIS_JDBC_TYPE.TIMESTAMP);
			MYSQL_JDBC_TYPE_MAP.put(MYSQL_JDBC_TYPE.TIME, IBATIS_JDBC_TYPE.TIMESTAMP);
			MYSQL_JDBC_TYPE_MAP.put(MYSQL_JDBC_TYPE.GEOMETRY, IBATIS_JDBC_TYPE.VARCHAR);
			MYSQL_JDBC_TYPE_MAP.put(MYSQL_JDBC_TYPE.VARBINARY, IBATIS_JDBC_TYPE.VARCHAR);
			MYSQL_JDBC_TYPE_MAP.put(MYSQL_JDBC_TYPE.BINARY, IBATIS_JDBC_TYPE.VARCHAR);
			MYSQL_JDBC_TYPE_MAP.put(MYSQL_JDBC_TYPE.BLOB, IBATIS_JDBC_TYPE.VARCHAR);
			MYSQL_JDBC_TYPE_MAP.put(MYSQL_JDBC_TYPE.TINYBLOB, IBATIS_JDBC_TYPE.VARCHAR);
			MYSQL_JDBC_TYPE_MAP.put(MYSQL_JDBC_TYPE.MEDIUMBLOB, IBATIS_JDBC_TYPE.VARCHAR);
			MYSQL_JDBC_TYPE_MAP.put(MYSQL_JDBC_TYPE.LONGBLOB, IBATIS_JDBC_TYPE.VARCHAR);
		}
	}

}